package cn.com.blueInfo.bpm.system.repository;

import cn.com.blueInfo.bpm.system.entity.Role;
import cn.com.blueInfo.bpm.system.request.RoleDTO;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * 角色 数据服务类
 * @author suxch
 * @since 2025-09-01 19:17:41
 */
public interface RoleRepository extends IService<Role> {

    /**
     * 新增角色
     * @param role 角色参数
     */
    Integer createRole(Role role);

    /**
     * 批量新增角色
     * @param roleList 角色参数列表
     */
    Integer batchCreateRole(List<Role> roleList);

    /**
     * 删除角色
     * @param roleId 角色ID
     */
    Integer deleteRole(Long roleId);

    /**
     * 批量删除角色
     * @param roleIdList 角色ID列表
     */
    Integer batchDeleteRole(List<Long> roleIdList);

    /**
     * 更新部分角色
     * @param role 角色参数
     */
    Integer updateRolePartial(Role role);

    /**
     * 更新全部角色
     * @param role 角色参数
     */
    Integer updateRole(Role role);

    /**
     * 查询一条角色
     * @param roleId 角色ID
     */
    Role getRoleById(Long roleId);

    /**
     * 分页查询角色
     * @param roleQueryDTO 角色参数
     */
    Page<Role> getRolePage(RoleDTO.QueryDTO roleQueryDTO);

    /**
     * 根据条件查询 角色 数量
     * @param roleQueryDTO 角色参数
     */
    Long getRoleCount(RoleDTO.QueryDTO roleQueryDTO);

    /**
     * 根据条件查询 角色
     * @param roleQueryDTO 角色参数
     */
    List<Role> getRoleList(RoleDTO.QueryDTO roleQueryDTO);

}
